package com.allwees.bs.module.pms.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.allwees.bs.module.base.service.BoService;
import com.allwees.bs.module.pms.entity.Category;
import com.allwees.bs.module.pms.entity.Product;
import com.allwees.bs.module.pms.req.PutoffProductReq;
import com.allwees.bs.module.pms.req.PutonProductReq;
import com.allwees.bs.module.pms.req.SetCategoryReq;
import com.allwees.bs.module.pms.req.query.ProductsSkusQueryReq;
import com.allwees.bs.module.pms.vo.ExportProductSkuBean;

import java.util.Collection;
import java.util.List;

/**
 * Product操作基础接口
 *
 * @author yangylsky
 * @since 2019-08-21
 */
public interface BaseProductService extends BoService<Product> {
    /**
     * <ul>自动生成商品编号（5位类别编号+5位序列号）
     * <li>5位类别编号为：2位一级分类数字编号+3位二三级分类数字或字母编号序列</li>
     * <li>5位序列号从数字开始，超出5位数字后开启大写字母编号</li>
     * </ul>
     *
     * @param
     * @return
     */
    String genProductNo(Category category);

    /**
     * 执行Product上架
     *
     * @param req
     */
    int puton(PutonProductReq req);

    /**
     * 执行Product下架
     *
     * @param req
     */
    int putoff(PutoffProductReq req);

    boolean batchUpdateCategory(SetCategoryReq req);

    /**
     * @param page
     * @param req
     * @return
     */
    List<ExportProductSkuBean> exportProductsSkus(Page<ExportProductSkuBean> page, ProductsSkusQueryReq req);


    boolean updateBatchById(Collection<Product> entityList);

    void batchUpdateNumLimitReq(String productUuid, Integer num);
}
